This invention relates to software environments and more particularly to updating software components in such environments.
In general, a “software component” is a computer program object or a collection of objects that conforms to a specification, such as Java, the component object model (COM), the distributed component object model (DCOM), etc. The advantages of using software components include modularity, support for distributed processing systems, and language independence, which means that software components implemented in different computer programming languages can work together.
Java Micro Edition (JME) is a platform or environment that is often used in devices having limited processing resources, such as mobile telephones and other terminals in digital communication systems. Software components written in Java, i.e., Java applications, which are sometimes called midlets, are executed by processors in such devices, and such components implement many device functions, e.g., display of image or text files, playback of audio or video files, etc. A Java application is typically downloaded as a set of compiled Java files (i.e., class files). During execution, the application's classes are loaded into a virtual machine (VM).
The use of JME for programming communication devices is described in, for example, Q. H. Mahmoud, “Mobile Device Services and Platforms”, August 2006, available at developers.sun.com/mobility/midp/articles/midpwap2/?feed=DSC and Q. H. Mahmoud, “J2ME MIDP and WAP Complementary Technologies”, February 2002, available at http://developers.sun.com/mobility/midp/articles/midpwap/. A midlet is described in a Java Descriptor (JAD) file and is run in a midlet management software that provides an operating environment. When finished running, a midlet remains installed on a device until it is removed.
Development of Java applications and similar software components is a continual process, and so occasionally applications already installed in a device are superseded by updated or upgraded versions. The JME environment currently provides for updating or upgrading a midlet by having the user of a device (1) search for another version of the Java application that best fits on the device, (2) download the other version, and (3) install the replacement version of the Java application.
With the current update procedure, an entire Java application is downloaded even if only one resource file, e.g., an audio file, in the application needs to be updated. Thus, the current update procedure can waste time and communication system bandwidth. Moreover, the user needs to perform the entire update procedure and then execute the application before the user can determine whether the application fits on the user's device, which is to say that the device has enough memory for it. Again, this can waste the user's time and cause dissatisfaction with the user's device.
It would be advantageous to streamline the current update procedure to make it more accessible for inexperienced users and to help ensure that users install the correct versions of their applications. It would also be advantageous for the update procedure to help reduce fragmentation of an updated application by isolating the variable media resources.